/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.edu.ues.igf115.clave1.datos;


import java.util.Date;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import sv.edu.ues.igf115.clave1.dominio.ClienteTarjeta;
import sv.edu.ues.igf115.clave1.dominio.ClienteTarjetaEstado;
import sv.edu.ues.igf115.clave1.dominio.ClienteTarjetaEstadoId;
import sv.edu.ues.igf115.clave1.dominio.Establecimiento;
import sv.edu.ues.igf115.utilidades.datos.HibernateUtil;

/**
 *
 * @author Traabajo
 */
public class ClienteTarjetaEstadoDao {
    
    private HibernateUtil hibernateUtil = new HibernateUtil() ;
	
	public void guarda(ClienteTarjetaEstado clienteTarjetaEstado){
		//1. Obtengo la SessionFactory
		Session sesion = hibernateUtil.getSession();
				//3. Obtengo la Transaccion
		Transaction tx = sesion.beginTransaction();
		//4. Guardo la libreta
		sesion.save(clienteTarjetaEstado);
		//5. Guardo los cambios de la sesion
		tx.commit();
		sesion.flush();
		//6. Cierro la sesion
		sesion.close();
}
	
	public void actualizar(ClienteTarjetaEstado clienteTarjetaEstado) {
	    // 1. Obtengo la SessionFactory
		Session sesion = hibernateUtil.getSession();
	   	    // 3. Obtengo la Transaccion
	    Transaction tx = sesion.beginTransaction() ;
	    //crear un nuevo objeto
	    ClienteTarjetaEstado clienteTarjetaEstadoNew = new ClienteTarjetaEstado();
	    //obtener el objeto
/*	    clienteTarjetaEstadoNew=obtenerClienteTarjetaEstado(clienteTarjetaEstado.getId());
	    clienteTarjetaEstadoNew.setFechaTransaccion(clienteTarjetaEstado.getFechaTransaccion());
	    clienteTarjetaEstadoNew.setConcepto(clienteTarjetaEstado.getConcepto());
            clienteTarjetaEstadoNew.setCargo(clienteTarjetaEstado.getCargo());
            clienteTarjetaEstadoNew.setCargosMes(clienteTarjetaEstado.getCargosMes());
            clienteTarjetaEstadoNew.setEstablecimiento(clienteTarjetaEstado.getEstablecimiento());
*/	    
	    // 4. Actualizo la libreta
	    sesion.update(clienteTarjetaEstado) ;
	    // 5. Guardo los Cambios de la sesion
	    tx.commit();
	    sesion.flush() ;
	    // 6. Cierro la sesion
	    sesion.close() ;
   }
	
	public void eliminar(ClienteTarjetaEstado clienteTarjetaEstadoId) {
	   Session sesion = hibernateUtil.getSession();
	    // 3. Obtengo la Transaccion
	    Transaction tx = sesion.beginTransaction() ;
	    // 4. Actualizo la libreta
	    sesion.delete(clienteTarjetaEstadoId) ;
	    // 5. Guardo los Cambios de la sesion
	    tx.commit() ;
	    sesion.flush() ;
	    // 6. Cierro la sesion
	    sesion.close() ;
   }	
	
        public ClienteTarjetaEstado mostrar(String id_cliente,String id_tarjeta,Date fecha)
        {
                Session sesion = hibernateUtil.getSession();
                String consulta = "from ClienteTarjetaEstado as clienteTarjeta where clienteTarjeta.id.idCliente = :id_cliente "
                        + "and clienteTarjeta.id.idTarjeta = :id_tarjeta and clienteTarjeta.id.fechaLimitePago = :fecha";
		Query query = sesion.createQuery(consulta);
		query.setParameter("id_cliente", id_cliente);
                query.setParameter("id_tarjeta", id_tarjeta);
                query.setParameter("fecha", fecha);
                
		List asignatura = query.list();
		sesion.close();
		if (asignatura.isEmpty()){
			return null;
		}else{
			return (ClienteTarjetaEstado)asignatura.get(0);
		}

       }
        
	public List<ClienteTarjetaEstado> obtenerClienteTarjetaEstado(){
		Session sesion = hibernateUtil.getSession();
		String consulta = "from ClienteTarjetaEstado";
		Query query = sesion.createQuery(consulta);
		//query.setParameter("id_cliente", id.getIdCliente());
                //query.setParameter("id_tarjeta", id.getIdTarjeta());
                //query.setParameter("fecha", id.getFechaLimitePago());
                
		List asignatura = query.list();
		sesion.close();
		if (asignatura.isEmpty()){
			return null;
		}else{
			return asignatura;
		}

	}
        
        
        public List<ClienteTarjeta> obtenerid (){
		//1. Obtengo la SessionFactory
		
		//2. Obtengo la Session
		Session sesion = hibernateUtil.getSession();
		
               String condicion = "select DISTINCT (clienteTarjeta.id.idcliente) from ClienteTarjeta clienteTarjeta" ;
               
               org.hibernate.Query consulta = sesion.createQuery(condicion) ;
                
               // consulta.setString("id_cliente", id_cliente) ;
               // consulta.setString("id_tarjeta", tarjeta) ;
		
                List idClienteTarjetaEstado = consulta.list();
		
                sesion.close();
		if (idClienteTarjetaEstado.isEmpty()){
			return null;
		}else{
			return idClienteTarjetaEstado;
		}
	}
    
                public List<Establecimiento> obtenerEstablecimientoid (){
		//1. Obtengo la SessionFactory
		
		//2. Obtengo la Session
		Session sesion = hibernateUtil.getSession();
		
               String condicion = "from Establecimiento" ;
               
               org.hibernate.Query consulta = sesion.createQuery(condicion) ;
                
               // consulta.setString("id_cliente", id_cliente) ;
               // consulta.setString("id_tarjeta", tarjeta) ;
		
                List idEstablecimiento = consulta.list();
		
                sesion.close();
		if (idEstablecimiento.isEmpty()){
			return null;
		}else{
			return idEstablecimiento;
		}
	}
    
                public List<ClienteTarjetaEstado> obtenerClienteTarjetaEstadoid (){
		//1. Obtengo la SessionFactory
		
		//2. Obtengo la Session
		Session sesion = hibernateUtil.getSession();
		
               String condicion = "from ClienteTarjetaEstado" ;
               
               org.hibernate.Query consulta = sesion.createQuery(condicion) ;
                
               // consulta.setString("id_cliente", id_cliente) ;
               // consulta.setString("id_tarjeta", tarjeta) ;
		
                List idClienteTarjetaEstado = consulta.list();
		
                sesion.close();
		if (idClienteTarjetaEstado.isEmpty()){
			return null;
		}else{
			return idClienteTarjetaEstado;
		}
	}                
                
                public List<String> obtenerClienteTarjetaEstadoidString (){
		//1. Obtengo la SessionFactory
		
		//2. Obtengo la Session
		Session sesion = hibernateUtil.getSession();
		
               String condicion = "select distinct(clienteTarjetaEstado.id.idCliente) from ClienteTarjetaEstado as clienteTarjetaEstado" ;
               
               org.hibernate.Query consulta = sesion.createQuery(condicion) ;
                
               // consulta.setString("id_cliente", id_cliente) ;
               // consulta.setString("id_tarjeta", tarjeta) ;
		
                List idClienteTarjetaEstado = consulta.list();
		
                sesion.close();
		if (idClienteTarjetaEstado.isEmpty()){
			return null;
		}else{
			return idClienteTarjetaEstado;
		}
	}     
                 
                 
             public List<String> obtenerClienteTarjetaEstadoTarjetaidString (){
		//1. Obtengo la SessionFactory
		
		//2. Obtengo la Session
		Session sesion = hibernateUtil.getSession();
		
               String condicion = "select distinct(clienteTarjetaEstado.id.idTarjeta) from ClienteTarjetaEstado as clienteTarjetaEstado" ;
               
               org.hibernate.Query consulta = sesion.createQuery(condicion) ;
                
               // consulta.setString("id_cliente", id_cliente) ;
               // consulta.setString("id_tarjeta", tarjeta) ;
		
                List idClienteTarjetaEstado = consulta.list();
		
                sesion.close();
		if (idClienteTarjetaEstado.isEmpty()){
			return null;
		}else{
			return idClienteTarjetaEstado;
		}
	}                
                  
            public List<String> obtenerClienteTarjetaidClienteString (){
		//1. Obtengo la SessionFactory
		
		//2. Obtengo la Session
		Session sesion = hibernateUtil.getSession();
		
               String condicion = "select distinct(clienteTarjeta.id.idcliente) from ClienteTarjeta as clienteTarjeta" ;
               
               org.hibernate.Query consulta = sesion.createQuery(condicion) ;
                
               // consulta.setString("id_cliente", id_cliente) ;
               // consulta.setString("id_tarjeta", tarjeta) ;
		
                List idClienteTarjetaEstado = consulta.list();
		
                sesion.close();
		if (idClienteTarjetaEstado.isEmpty()){
			return null;
		}else{
			return idClienteTarjetaEstado;
		}
	}                       
                
        public List<String> obtenerClienteTarjetaidTarjetaString (){
		//1. Obtengo la SessionFactory
		
		//2. Obtengo la Session
		Session sesion = hibernateUtil.getSession();
		
               String condicion = "select distinct(clienteTarjeta.id.idtarjeta) from ClienteTarjeta as clienteTarjeta" ;
               
               org.hibernate.Query consulta = sesion.createQuery(condicion) ;
                
               // consulta.setString("id_cliente", id_cliente) ;
               // consulta.setString("id_tarjeta", tarjeta) ;
		
                List idClienteTarjetaEstado = consulta.list();
		
                sesion.close();
		if (idClienteTarjetaEstado.isEmpty()){
			return null;
		}else{
			return idClienteTarjetaEstado;
		}
	}                       
                
            
}
